草庐IT

bash - 在 bash 脚本中运行 hadoop 命令

我需要在bash脚本中运行hadoop命令,它遍历amazonS3上的一堆文件夹,然后将这些文件夹名称写入一个txt文件,然后进行进一步处理。但问题是当我运行脚本时,似乎没有文件夹名称被写入txt文件。我想知道是否是hadoop命令运行时间太长,bash脚本没有等到它完成并继续做进一步的处理,如果是这样我如何让bash等到hadoop命令完成然后去做其他过程​​?这是我的代码,两种方法我都试过了,都不行:1.listCmd="hadoopfs-lss3n://$AWS_ACCESS_KEY:$AWS_SECRET_KEY@$S3_BUCKET/*/*/$mydate|greps3n|a

bash - 计算 HDFS 文件夹中具有给定扩展名的文件数

我正在编写一个bash脚本,它应该能够计算指定文件夹中的json文件的数量。我现在正在做的是:hdfsdfs-ls/path/to/files/*.json|grep-E'^-'|wc-l当至少有一个文件时,它返回结果的数量,但是当没有json文件时,我希望结果为0,因为路径存在但不包含任何匹配的文件*.json模式。然而,我得到的是一个错误:ls:`/path/to/files/*.json':Nosuchfileordirectory这是预期的行为吗? 最佳答案 是的,这是默认行为。由于这些是错误消息,因此它们被发送到stder

hadoop - 使用 zkcli.sh bash 通过 oozie shell 操作将 solr 配置从 hdfs 发送到 zookeeper

每次我尝试将solr配置发送给zookeeper时,我都会在下面遇到异常。作为confdir,我输入了这个地址:“hdfs://some_address/user/Peter/dir_with_date”。在bash脚本后面的jars中实现时,我看到有一个Paths.get方法,它将我的带有配置的字符串转换为没有双斜杠的字符串(“hdfs:/some_ad...”)。Exceptioninthread"main"java.io.IOException:Pathhdfs:/some_address/user/Peter/dir_with_datedoesnotexistatorg.apa

bash - $"${@///\\}"在 bash 中是什么意思?

当我阅读一个Hadoop部署脚本时,我发现了以下代码:ssh$HADOOP_SSH_OPTS$slave$"${@///\\}""${@///\\}"input是一个简单的shell命令(参数扩展)。为什么要添加$在这个命令之前?这是什么$""意思? 最佳答案 这段代码只是有问题:它打算转义本地脚本的参数列表,以便可以通过ssh传输带空格的参数,但它做得很糟糕(缺少某些类型的空格——以及许多类别的元字符——以可利用的方式),并使用$""语法(执行翻译表查找)而没有任何可理解的理由。错误的事情(又名:它应该做什么,以及它是如何失败的)

bash - 将参数从 shell 脚本传递到 hive 脚本

我有一个问题可以分为两种方式:我的要求是将参数从shell脚本传递到hive脚本。要么在一个shell脚本中,我应该在配置单元语句中包含变量的值。我将用一个例子来解释这两者:1)从shell脚本传递参数到hiveQL->MytestHiveQL:selectcount(*)fromdemodb.demo_tablelimit${hiveconf:num}我的测试shell脚本:cnt=1sh-c'hive-hiveconfnum=$cnt-fcountTable.hql'所以基本上我想在HQL中包含“cnt”的值,在这种情况下不会发生这种情况。我得到的错误是:FAILED:ParseE

bash - 使用 Amazon MapReduce/Hadoop 进行图像处理

我有一个项目需要我处理大量(1000-10000)大(100MB到500MB)图像。我正在进行的处理可以通过Imagemagick完成,但我希望实际上是在Amazon的ElasticMapReduce平台(我相信该平台使用Hadoop运行)上进行处理。在我找到的所有示例中,它们都处理基于文本的输入(我发现WordCount样本有十亿次)。我找不到任何有关Hadoop此类工作的信息:从一组文件开始,对每个文件执行相同的操作,然后将新文件的输出作为它自己的文件写出。我很确定这可以用这个平台来完成,并且应该可以用Bash来完成;我认为我不需要费心去创建整个Java应用程序或其他东西,但我可能

bash - hadoop中的批量重命名

如何将hdfs目录中的所有文件重命名为.lzo扩展名?.lzo.index文件不应重命名。例如,这个目录列表:file0.lzofile0.lzo.indexfile0.lzo_copy_1可以重命名为:file0.lzofile0.lzo.indexfile0.lzo_copy_1.lzo这些文件是lzo压缩的,我需要它们具有.lzo扩展名才能被hadoop识别。 最佳答案 如果您不想为此编写Java代码-我认为使用命令行HDFSAPI是您最好的选择:mvinHadoophadoopfs-mvURI[URI…]您可以使用一个小的衬

bash - Hadoop 和 Bash : delete filenames matching range

假设您在HDFS中有一个文件列表,其中包含一个公共(public)前缀和一个递增的后缀。例如,part-1.gz,part-2.gz,part-3.gz,...,part-50.gz我只想在目录中留下几个文件,比如3个。任何三个文件都可以。这些文件将用于测试,因此文件的选择无关紧要。删除其他47个文件的最简单、最快的方法是什么? 最佳答案 这里有几个选项:手动将三个文件移至新文件夹,然后删除旧文件夹。使用fs-ls获取文件名,然后拉出前n个,然后rm它们。在我看来,这是最可靠的方法。hadoopfs-ls/path/to/files

bash - 最近 24 小时从 HDFS 中的多个目录复制文件到本地

我在从HDFS获取数据到本地时遇到问题。我有例如:/path/to/folder/report1/report1_2019_03_24-03_10*.csv/path/to/folder/report1/report1_2019_03_24-04_12*.csv.../path/to/folder/report1/report1_2019_03_25-05_12*.csv/path/to/folder/report1/report1_2019_03_25-06_12*.csv/path/to/folder/report1/report1_2019_03_25-07_11*.csv/pa

bash - 获取 HDFS 中最后更新的文件

我想要我的一个HDFS目录中的最新更新文件。代码基本上应该遍历目录和子目录,并获取带有文件名的最新文件路径。我能够在本地文件系统中获取最新文件,但不确定如何为HDFS文件系统执行此操作。查找/tmp/sdsa-typef-print0|xargs-0stat--format'%Y:%y%n'|排序-nr|剪切-d:-f2-|头以上代码适用于本地文件系统。我可以从HDFS获取日期、时间和文件名,但是如何使用这3个参数获取最新文件?这是我试过的代码:hadoopfs-ls-R/tmp/apps|awk-F""'{print$6""$7""$8}'我们将不胜感激。提前致谢。